Vous devez activer Javascript pour accéder à ce site
Accueil  / Semaine 2 / Les fichiers plats

Les fichiers plats

Les fichiers plats (de l’anglais flat file) représentent sans doute le format le plus universel pour échanger des données. La plupart des chiffriers et des bases de données relationnelles peuvent importer leurs données à partir de fichiers plats et exporter leurs données sous la forme de fichiers plats.

Un fichier plat se caractérise par un fichier contenant les données d’un tableau. Généralement, chaque ligne du tableau correspond à une ligne dans le fichier. Dans une même ligne, on sépare les données appartenant à différentes colonnes à l’aide d’un caractère particulier, comme la virgule — dans ce cas particulier, on dit qu’on a un fichier CSV, de l’anglais Comma-Separated Values. Voici un exemple :

Jean, Drummondville, 5
Pierre, Montréal, 10
Jeanne, Québec, 14

Outre la virgule, on peut utiliser d’autres caractères pour séparer les champs, comme la ligne verticale (|) ou la tabulation (\t [1]).

Lorsqu’on passe d’un système d’exploitation de type Unix (comme Mac OS ou Linux) à un système d’exploitation Windows, il faut prendre garde au fait que la définition même de ce qu’est une ligne change dans un fichier texte. Dans les systèmes d’exploitation de type Unix, le caractère \n est utilisé pour indiquer le passage à une nouvelle ligne, alors que deux caractères sont requis sous Windows : \r\n. (Wikipédia explique cette différence dans l’article Newline.)

Dans certains cas, on souhaite utiliser le caractère séparateur lui-même dans certains champs. Par exemple, la virgule pourrait être utilisée au sein d’un champ. Dans ce cas, on permet souvent de mettre certaines valeurs de champs entre guillemets, comme dans l’exemple suivant :

Jean, "Drummondville, Jonquière et Québec", 5
Pierre, Montréal, 10
Jeanne, Québec, 14

Il arrive que chaque champ ait un nombre de caractères prédéterminé, comme dans l’exemple suivant :

01 12
01 14
02 14

On voit ici qu’il n’est pas nécessaire de séparer les champs par des virgules. En fait, le traitement du fichier est plus rapide dans ce cas lorsqu’on utilise des séparateurs comme la virgule, car le logiciel n’a pas à déterminer où les champs se terminent.

Les fichiers plats avec GNU Coreutils (matériel optionnel)

On peut utiliser un ensemble d’outils très efficaces, en ligne de commande, pour traiter les fichiers plats GNU Coreutils. Si vous avez un système d’exploitation Mac OS ou Linux, ces programmes sont sans doute déjà sur votre machine ! Sinon, vous pouvez télécharger une version pour Windows.

Comme il s’agit de programmes en ligne de commande, vous devez lancer une console pour les utiliser. Sous Mac OS, il s’agit du programme Terminal, alors que sous Windows, il faut aller au menu démarrer, plus faire exécuter et taper "cmd".

Il y a une documentation en ligne sur ces outils. Voici quelques exemples :

 Pour permuter aléatoirement les lignes d’un fichier CSV, faites :

cat -n monfichier.csv | sort --random-sort | cut -f 2-


 Pour extraire les 4 premières colonnes d’un fichier CSV, faites :

cut -f 1,2,3,4 -d , monfichier.csv

Un traitement rapide ? (matériel optionnel)

Étonnamment peut-être, à moins de faire un traitement vraiment minimaliste des fichiers CSV, il semble que le goulot d’étranglement se situe au niveau du microprocesseur. En somme, la vitesse de traitement des fichiers CSV dépend davantage de votre microprocesseur que de la vitesse de votre disque. Cela risque d’être d’autant plus vrai si vous stockez les données sur des disques flash (Solid-State Drives).

Pour en savoir plus...

 Article Comma-separated values (en français) dans Wikipédia.

 Y. Shafranovich
, RFC4180 : Common Format and MIME Type for Comma-Separated Values (CSV) Files, 2005.


[1Pour les caractères non imprimables, nous utilisons les conventions qui prévalent en Java ou en C pour représenter les caractères : \r pour le retour de charriot, \t pour la tabulation, etc.